using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;

namespace Jbe.TestSuite.TestDevices.FunctionGenerator.Interface
{
    /// <summary>
    /// Describes a configuration entity for the function generator.
    /// </summary>
    public interface IFunctionGeneratorConfig : INotifyPropertyChanged
    {
        /// <summary>
        /// The wave form.
        /// </summary>
        WaveForm WaveForm { get; set; }

        /// <summary>
        /// The amplitude of the signal.
        /// </summary>
        double Amplitude { get; set; }

        /// <summary>
        /// The frequency of the signal.
        /// </summary>
        double Frequency { get; set; }

        /// <summary>
        /// Set the object in readonly mode.
        /// </summary>
        void Lock();

        /// <summary>
        /// Creates a deep copy of the object.
        /// </summary>
        IFunctionGeneratorConfig Clone();
    }

    /// <summary>
    /// The supported wave forms.
    /// </summary>
    public enum WaveForm
    {
        Sine,
        Square,
        Triangle,
        Sawtooth
    }
}
